import Vue from 'vue'
import App from './App'
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
// import { http } from './restful/http.js' // 加载http组件
import * as api from './restful/infoapi.js' // API接口集合
Vue.prototype.$api = api
// Vue.prototype.$imgUrl = 'https://xcx.byxx.com.cn' // 图片网络根路径
Vue.prototype.$imgUrl = 'https://xcx.byxx.com.cn' // 图片网络根路径
Vue.prototype.$qqMapKey = 'ILNBZ-Z5UW3-4SP33-3MGGX-TOUG3-PPBND' // 设置全局腾讯地图Key

import {
	modStorageSync
} from './common/common.js'
uni.modStorageSync = modStorageSync

// 使用mixins加载全局弹窗遮罩
import mixins from "@/mixins/index"
Vue.mixin(mixins)
import share from "@/mixins/share"
Vue.mixin(share)

// 如果您是像我下面这样挂载在 Vue 原型链上，则通过 this.$http 调用
// Vue.prototype.$http = http
// 如果您在项目中有用到 nvue 页面，是无法通过 this.$http 调用
// 需要将实例添加到 uni 对象上，然后通过 uni.$http 调用
// uni.$http = http


// 获取全局缓存保存用户信息
// Vue.prototype.$getGlobalUser = function(key) {
// 	let userInfo = uni.getStorageSync("globalUser")
// 	if (userInfo != null && userInfo != "" && userInfo != undefined) {
// 		return userInfo;
// 	} else {
// 		return null;
// 	}
// }


// 获取openid,unionid,session_key
// Vue.prototype.$getMyUserInfo = function() {
// 	let that = this
// 	uni.login({
// 	provider: 'weixin',
// 	success(loginResult) {
// 		// console.log(loginResult)
// 		//获得微信登录code:授权码
// 		let code = loginResult.code
// 		// console.log(code);
// 		that.$api.getMyUserInfo({code:code}).then(res => {
// 			console.log(res)
// 			let userInfo = res.data;
// 			console.log(userInfo)
// 			getApp().globalData.openid = userInfo.Openid
// 		})
// 	}
// 	})
// }


// #ifdef MP-WEIXIN
// 获取微信用户授权（用户登录及获取用户Openid、Unionid、Session_key）
Vue.prototype.$getMyUserInfo = function() {
		console.log('获取用户信息')
		let that = this
		uni.login({
			provider: 'weixin',
			success(loginResult) {
				// console.log(loginResult)
				//获得微信登录code:授权码
				let code = loginResult.code
				that.$api.getMyUserInfo({
					code: code
				}).then(res => {
					// console.log(res)
					let userInfo = res.data;
					//判断缓存中是否有用户数据，没有则获取
					let globaUserInfo = uni.getStorageSync('globaUserInfo')
					if (globaUserInfo == null || globaUserInfo == '' || globaUserInfo == undefined) {
						uni.setStorageSync('globaUserInfo', res.data)
						uni.setStorageSync('globalUserInfoState', 0)
					}
					getApp().globalData.openid = userInfo.Openid
					getApp().globalData.unionid = userInfo.Unionid
					getApp().globalData.sessionKey = userInfo.Session_key
					that.$isResolve()
				})
			}
		})
	},

	// 检查登录状态是否过期
// #endif


	// 获取用户详细信息（获取您的昵称、头像、地区及性别）
	// 返回值为1时获取信息成功，返回0时授权失败
	Vue.prototype.$getUserInfo = function(action) {
		let that = this
		uni.getUserProfile({
			provider: 'weixin',
			lang: 'zh_CN',
			desc: '获取您的昵称、头像、地区及性别',
			success: async (infoRes) => {
				if (infoRes.errMsg === 'getUserProfile:ok') {
					console.log('获取到用户信息')
					// console.log(infoRes.userInfo)
					// 获取到的当前数据存入缓存
					let globaUserInfo = uni.getStorageSync('globaUserInfo')
					if (globaUserInfo == null || globaUserInfo == '' || globaUserInfo == undefined) {
						uni.setStorageSync('globaUserInfo', infoRes.userInfo)
					} else {
						await uni.modStorageSync('globaUserInfo', infoRes.userInfo)
					}
					uni.setStorageSync('globalUserInfoState', 1)
					that.$GetUserVipInfo(infoRes.userInfo.nickName, infoRes.userInfo.avatarUrl)

				} else {
					console.log('未获取到用户信息')
					uni.setStorageSync('globalUserInfoState', 0)
				}
			},
			fail: (err) => {
				console.log('用户拒绝')

				uni.setStorageSync('globalUserInfoState', -1)
				// 用户拒绝，获取临时用户信息
				uni.getUserInfo({
					provider: 'weixin',
					lang: 'zh_CN',
					success: function(infoRes) {
						console.log(infoRes.userInfo);
						uni.setStorageSync('globaUserInfo', infoRes.userInfo)
						that.$GetUserVipInfo(infoRes.userInfo.nickName, infoRes.userInfo.avatarUrl)
					}
				});
				// console.log('userInfo-err', JSON.stringify(err));
				if (action == 'goindex') {
					uni.showToast({
						title: '授权失败，返回首页',
						icon: 'error',
					});
					uni.switchTab({
						url: '/pages/index/index'
					})
				} else {
					that.$Reauthorization()
				}

			}
		})
	}
// 首次获取授权登录
Vue.prototype.$Firstauthorization = function() {
	let that = this
	this.$showModal({
			title: '授权登录',
			content: '百业信息需要获取您的头像和昵称，以便更好的为您服务！',
			showCancel: false,
			// cancelText: '返回首页',
			// cancelColor: '#c70109',
			confirmText: '授权登录',
			confirmColor: '#3CC51F',
		})
		.then(res => {
			// 点击确认的操作
			// console.log(res);
			console.log('用户点击确定');
			that.$getUserInfo('goindex')
		}).catch(err => {
			// 点击取消按钮的操作
			console.log(err);
			console.log('用户点击取消');
			uni.switchTab({
				url: '/pages/index/index'
			})

		})
}
// 重新获取授权登录框
Vue.prototype.$Reauthorization = function() {
	let that = this
	this.$showModal({
			title: '授权登录',
			content: '您还未授权登陆，部分功能将不能使用，是否授权登录？',
			showCancel: true,
			cancelText: '返回首页',
			cancelColor: '#c70109',
			confirmText: '授权登录',
			confirmColor: '#3CC51F',
		})
		.then(res => {
			// 点击确认的操作
			console.log(res);
			console.log('用户点击确定');
			that.$getUserInfo('goindex')
		}).catch(err => {
			// 点击取消按钮的操作
			console.log(err);
			console.log('用户点击取消');
			uni.switchTab({
				url: '/pages/index/index'
			})

		})
}
// 获取用户Vip详情信息（是否是Vip，可发布数量，今日是否已经发布，是否认证）
Vue.prototype.$GetUserVipInfo = async function(nickName, avatarUrl) {
	await this.$api.getMyUserVipInfo({
			openId: getApp().globalData.openid,
			unionId: getApp().globalData.unionid,
			nickName: nickName,
			avatarUrl: avatarUrl,
			cid: getApp().globalData.cityId,
		})
		.then(async res => {
			// console.log(res)
			// uni.setStorageSync('userVipInfo', res.data)
			// console.log(uni.getStorageSync('userVipInfo'))
			await uni.modStorageSync('globaUserInfo', res.data)
			// console.log(uni.getStorageSync('globaUserInfo'))
			/*
			IsYZ	是否认证
			Num		可发布数 可发布数
			IsFB	是否发布	0为未发布
			IsVIP	是否是Vip 0为非Vip
			*/
		})
}
// 切换城市
Vue.prototype.$changeCity = async function(cityId) {
	await this.$api.getCityList().then(res => {
		for (let i = 0; i < res.data.CityList.length; i++) {
			let item = res.data.CityList[i];
			if (item.ID == cityId) {
				getApp().globalData.cityName = item.City
				getApp().globalData.cityId = item.ID
				getApp().globalData.cityIndex = i
			}
		}
		uni.setNavigationBarTitle({
			title: "百业信息报|" + getApp().globalData.cityName + '网'
		})
	})
}
// 设置图片完整URL
Vue.prototype.$getImgUrl = function(src) {
	return this.$imgUrl + src
}
// 获取城市同步
Vue.prototype.$onLaunched = new Promise(resolve => {
	Vue.prototype.$isResolve = resolve
})

// 返回上一页面
Vue.prototype.$back=function(step = 1){
	uni.$u.route({
		type:'navigateBack',
		delta: step,
	})
},

Vue.config.productionTip = false

// Vue.prototype.$serverUlr = "https://xcx.byxx.com.cn"  // 挂载全局参数serverUrl

App.mpType = 'app'

const app = new Vue({
	...App
})
app.$mount()
